from typing import Any

from docx import Document
import datetime
from openpyxl import Workbook

def remove_before_colon(s: Any) -> str:
    # 使用partition方法分割字符串
    before, colon, after = str(s).partition('：')
    # 返回冒号之后的部分，如果冒号不存在，则返回整个字符串
    return after if colon else str(s)

def remove_before(s: Any) -> str:
    # 使用partition方法分割字符串
    before, colon, after = str(s).partition('_')
    # 返回冒号之后的部分，如果冒号不存在，则返回整个字符串
    return before if colon else str(s)

##打开excel，设定excel的标题即header列表，并用append写入
names = []
with open("name.txt","r", encoding='utf-8') as f:
    nameStr = f.read()
    names = nameStr.split('\n')
    file_num = 1
for name in names:
    print(name)
##打开excel，设定excel的标题即header列表，并用append写入
    wb = Workbook()
    sheet = wb.active
    header = ['序号', '需求编号', '功能类', '需求描述', '需求分析', '实现概要', '影响范围', '测试要点', '升级版本', '关联系统']
    sheet.append(header)

    # 打开word，取出tables
    path = name
    document = Document(path)
    tables = document.tables

    # n为为excel记录每一行设计的自增长序号，行列从0开始，所以table的行数应该是rows+1
    ## 每一条记录占据3行，所以设计for内步长为3
    n = 0
    for j in range(len(tables)):
        for i in range(0, len(tables[j].rows) + 1, 6):
            try:
                ##序号
                n += 1
                # 需求编号
                num = tables[j].cell(i+1, 1).text.strip()
                # 功能类
                mana = remove_before_colon(tables[j].cell(i+1, 2).text.strip())
                # 需求描述
                title = remove_before_colon(tables[j].cell(i + 2, 2).text.strip())
                # 需求分析
                dfn = remove_before_colon(tables[j].cell(i + 3, 2).text.strip())
                # 实现概要
                sxgy = remove_before_colon(tables[j].cell(i + 4, 2).text.strip())
                # 影响范围
                yxfw = remove_before_colon(tables[j].cell(i + 5, 2).text.strip())
                # 测试要点
                csyd = remove_before_colon(tables[j].cell(i + 6, 2).text.strip())
                # 升级版本
                sjbb = remove_before(remove_before(path))
                # 关联系统
                glxt = remove_before_colon(tables[j].cell(i+1, 3).text.strip())
                row = [n, num, mana, title, dfn, sxgy, yxfw, csyd, sjbb, glxt]
                sheet.append(row)  ##将上面此次循环得到的内容写入excel，形成一行记录
            except Exception as error:
                # 捕获异常，也可以用log写到日志里方便查看和管理
                print(error)
                continue
    save_path = rf'D:\Working\Python\WordToExcel\Word_To_Excel\test{file_num}.xlsx'
    wb.save(save_path)
    file_num = file_num + 1
    wb.close()
    